建立三报文握手,释放四报文握手
TCP 连接三个阶段,连接建立,数据传送,连接释放
连接建立
建立连接前服务端创建传输控制块 TCB,进入监听状态。
- 客户端创建 TCB,发送 SYN 报文
SYN=1,sequence=x
- 服务端同意建立连接,发送 SYN 报文
SYN=1,ACK=1,sequence=y,ack=x+1
- 客户端返回 ACK 报文,可以携带数据
ACK=1,sequence=x+1,ack=y+1
连接释放
释放时双方均处于 ESTABLISHED 状态。
- 客户端发送连接释放报文
FIN=1,seq=u
- 服务端立即发送确认
ACK=1,seq=v,ack=u+1
- 此时 A,没有数据需要发送,TCP 半关闭
- 服务端可以进行最后的数据传送
FIN=1,ACK=1,seq=w,ack=u+1
- 客户端返回最后的释放报文
ACK=1,seq=u+1,ack=v+1
- 此时客户端仍需等待 2MSL 才能进入 closed 状态。
- 防止确认丢失服务端重传
- 保证网络中的该连接的报文段消失